package org.femto.compmod.vis;

import org.femto.math.linalg.*;
import org.femto.math.geom.*;
import javax.media.opengl.*;

public interface SceneObject {

    public enum SHADING {
        AABB,
        POINTS,
        WIREFRAME,
        CONSTANT,
        FLAT,
        GOURAUD
    }

    // Get/Set color identifying the object
    public Vec3 getColor();
    public void setColor(Vec3 color);
    // Get/Set rendering mode.
    public SHADING getShading();
    public void setShading(SHADING shading);
    // Get AABB in model space.
    public AABB getAABB();
    // Get model-to-world transformation.
    public Matrix4x4 getTransform();
    // GL pre-rendering setup.
    public void prepare(GL gl);
    // Issue GL commands.
    public void render(GL gl, SHADING shading);
}
